2019年10月3日木曜日

善意で舗装された管理画面

とても久々の更新になってしまいました。
WordPressって何でもやろうと思えば出来るけど使う人のレベルによって裏側は合わせとかないといけないんですよね。
ちょっとタグが使えたり画像の右配置中央配置なんかが出来るだけでもだいぶ違う。
でもそんなの使えない、タイトル・サブタイトル・画像とテキストだけ配置できるようにしてと。
こりゃ大変だ。 
いつもどおりfunction.phpをいじくり回してAdvancedCustomFieldで項目を整える。
チーン
10個のタイトル・画像・テキストエリアの組み合わせをJSを使ったボタンで表示させています。
最初は0セット。
追加ボタンを押すごとに組み合わせ選択ボタンが出てそれを押すごとに入力画面が出る。
余計なものは入れさせないように(スペースの無駄だし)。
タイトルだけ入れたらメインタイトル。
タイトルとテキストまたは画像ならサブタイトルとして表示。
画像とテキスト両方入れたらサブタイトルと左寄せ画像とテキストを表示。
投稿編集画面を開いたら入力されたセットは表示する。
消すときは一旦セットの内容を消してから登録するしか無い。
リセットボタンとかは贅沢な望みだった。 
function内容は以下のようなものが入ってます。 カスタム投稿フィールドhogeの投稿画面だけ使うようにしています。

function admin_func() {
    global $post_type;
    if ($post_type == 'hoge') {
$str = <<<EOM
<script>
var contentCnt = 1;
function content_title(target){
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-text").slideDown();
}
function content_texts(target){
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-text").slideDown();
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-textarea").slideDown();
}
function content_images(target){
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-text").slideDown();
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-image").slideDown();
}
function content_full(target){
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-text").slideDown();
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-textarea").slideDown();
$(".acf-fields .acf-field[data-name='"+target+"'] .acf-field-image").slideDown();
}
function content_add(){
$(".acf-fields .acf-field[data-name='content"+contentCnt+"']").slideDown();
contentCnt+=1;
}

jQuery("document").ready(function(){
for(i=1;i<=9;i++){
var flg = 0;
var parent = $(".acf-fields .acf-field[data-name='content"+i+"']");
if(parent.find(".acf-field-text input").val() == ""){
parent.find(".acf-field-text").hide();
flg += 1;
}
if(parent.find(".acf-field-textarea textarea").val() == ""){
parent.find(".acf-field-textarea").hide();
flg += 1;
}
if(parent.find(".acf-field-image img").attr("src") == ""){
parent.find(".acf-field-image").hide();
flg += 1;
}
if(flg == 3){
parent.append("<input type='button' onclick='content_title(\"content"+i+"\")' value='メインタイトル' />");
parent.append("<input type='button' onclick='content_texts(\"content"+i+"\")' value='サブタイトルとテキスト' />");
parent.append("<input type='button' onclick='content_images(\"content"+i+"\")' value='サブタイトルと画像' />");
parent.append("<input type='button' onclick='content_full(\"content"+i+"\")' value='サブタイトルとテキストと画像' />");
parent.hide();
}else{
contentCnt+=1;
}
}
$(".acf-fields .acf-field[data-name='contents']").append("<input type='button' onclick='content_add()' value='コンテンツ追加' />");
});
</script>
EOM;
echo $str;
}
}
add_action('admin_head-post-new.php', 'admin_func');
add_action('admin_head-post.php', 'admin_func');

0 件のコメント:

コメントを投稿