サポート » 使い方全般 » 【BizVektor】お知らせ のトップのURLを任意のものに変更したい

  • k. ken

    (@kenkurihara)


    【BizVektor】(Version 1.8.23)の子テーマを作成して使っています。

    トップページに投稿系のリストを表示したいと思っています。

    外観 > テーマオプション の お知らせ で、

    [お知らせのトップのURL] が初期設定で、

    ドメイン/info/

    となっていますが、これを任意のものに変更する場合はどうすればよいでしょうか?

    たとえば、

    お知らせ → News

    に変更して使いたい場合、

    やはり、カテゴリーのトップは、

    ドメイン/info/ のままではなく、

    ドメイン/news/ としたいわけです。

    [お知らせのトップのURL]欄に

    /ドメイン/news/ としても、反映されないようでしたので、
    質問させていただきました。

    よろしくお願いいたします。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • こんにちは、@kenkurihara さん。

    テーマのソースを確認した所、バグ?っぽいです。
    修正される迄の間、以下に示すソースコードのプラグインを作成し、管理画面から有効化させればURLが変更されます。

    1. wp-content/plugins/直下にbizvektor-hackというディレクトリを作成する。
    2. wp-content/plugins/bizvektor-hack/直下にbizvektor-hack.phpを作成
    3. wp-content/plugins/bizvektor-hack/bizvektor-hack.phpに以下のソースコードを貼り付ける
    4. 管理画面でBizVektor Hackというプラグインを有効化
    5. パーマリンク設定画面で、内容は何も変更せず[変更を保存]をクリック
    <?php
    /**
     * Plugin Name: BizVektor Hack
     * Plugin URI: http://example.com/
     * Description: .
     * Version: 1.0.0
     * Author: Your name
     * Author URI: http://example.com/
     * License: GPLv2 or later
     * Text Domain: bizvektor-hack
     */
    
    /**
     * Change the post type args.
     *
     * @param array  $args Array of arguments for registering a post type.
     * @param string $name Post type key.
     *
     * @return array
     */
    function bizvektor_hack_register_post_type_args( $args = array(), $name = '' ) {
    	$theme      = wp_get_theme();
    	$theme_name = $theme->get( 'Name' );
    
    	if ( 'info' === $name && 'BizVektor' === $theme_name ) {
    		$info_top_url    = esc_html( bizVektorOptions( 'infoTopUrl' ) );
    		$info_top_url    = wp_parse_url( $info_top_url );
    		$post_type_slug  = str_replace( '/', '', $info_top_url['path'] );
    		$args['rewrite'] = array(
    			'slug'       => sanitize_key( $post_type_slug ),
    			'with_front' => false,
    		);
    	}
    
    	return $args;
    }
    
    add_filter( 'register_post_type_args', 'bizvektor_hack_register_post_type_args', 10, 2 );

    ※注意: 環境やお知らせのトップのURLに指定したURLに寄ってはエラーが出る可能性がありますの、ローカル環境などで動作確認を行ってください。

    マルチポスト
    http://goo.gl/1vaH5V

    k. ken

    (@kenkurihara)

    @kuck1u さん、返信ありがとうございます。
    マルチポストのご指摘ありがとうございます。
    気をつけます。

    さて、教えていただいた方法で、該当プラグインを当てたのですが、
    私の環境では、やはり状況は変わらなかったです。

    ★設定 > パーマリンク設定
     カスタム構造: /%category%/%post_id%.html

    ■お知らせ
    ◎トップURL設定: /ドメイン名/news/
    ◎結果:/ドメイン名/info/ポスト名[日本語]

    ■ブログ
    ◎トップURL設定#1: なし(空欄)
    ◎結果:/ドメイン名/カテゴリー名[英スラッグ]/ポストID[数字、シリアル値]
    ※カテゴリーを選択していない場合でも、いずれかのカテゴリーが選ばれる。
    ——-
    ◎トップURL設定#2: /ドメイン名/topics/
    ◎結果:/ドメイン名/カテゴリー名[英スラッグ]/ポストID[数字、シリアル値]

    ———-
    どこか、設定を謝っている箇所、ありますでしょうか?

    @kenkurihara さん。

    ごめんなさい。僕の初歩的ミスです。BizVektor Hackを以下のソースコードに変更してみてください。

    <?php
    /**
     * Plugin Name: BizVektor Hack
     * Plugin URI: http://example.com/
     * Description: .
     * Version: 1.0.0
     * Author: Your name
     * Author URI: http://example.com/
     * License: GPLv2 or later
     * Text Domain: bizvektor-hack
     */
    
    /**
     * Change the post type args.
     *
     * @param array  $args Array of arguments for registering a post type.
     * @param string $name Post type key.
     *
     * @return array
     */
    function bizvektor_hack_register_post_type_args( $args = array(), $name = '' ) {
    	$template = get_option( 'template' );
    
    	if ( 'info' === $name && 'biz-vektor' === $template ) {
    		$info_top_url    = esc_html( bizVektorOptions( 'infoTopUrl' ) );
    		$info_top_url    = wp_parse_url( $info_top_url );
    		$post_type_slug  = str_replace( '/', '', $info_top_url['path'] );
    		$args['rewrite'] = array(
    			'slug'       => sanitize_key( $post_type_slug ),
    			'with_front' => false,
    		);
    	}
    
    	return $args;
    }
    
    add_filter( 'register_post_type_args', 'bizvektor_hack_register_post_type_args', 10, 2 );
    • この返信は2 年、 8 ヶ月前に  KUCKLU さんが編集しました。
    k. ken

    (@kenkurihara)

    @kuck1u さん

    ご返信ありがとうございます。

    結果として、以下のようになりました(惜しい!)。

    —————————-
    ★おわび: このトピックで、「ドメイン名」としてきたのは、
    一般的には「サブディレクトリ」と呼ばれるものでした。誤解を招く表記ですみません。
    —————————-

    ■お知らせ
    ◎トップURL設定: /ドメイン名/サブディレクトリ名/news/
    ◎結果: /ドメイン名/サブディレクトリ名/サブディレクトリ名news/ポスト名[日本語]

    となってしまいます。

    ブログと違い、ポスト名も%post_id%.html(ポストID[数字、シリアル値)にならないのも、
    なにかの設定エラーでしょうか? それとも、そもそも、お知らせは パーマリンク設定のカスタム構造 に準じないのでしょうか?

    @kenkurihara さん。

    度々すみません。スラッシュを強制削除しているので、サブディレクトリに対応していのは気づいていたのですが

    ドメイン/news/ としたいわけです。

    とあったのと、バグ?が修正されるまでの間に合わせなので、大丈夫かな…と思っていました(言い訳)。以下のソースで大丈夫だと思います。

    <?php
    /**
     * Plugin Name: BizVektor Hack
     * Plugin URI: http://example.com/
     * Description: .
     * Version: 1.0.0
     * Author: Your name
     * Author URI: http://example.com/
     * License: GPLv2 or later
     * Text Domain: bizvektor-hack
     */
    
    /**
     * Change the post type args.
     *
     * @param array  $args Array of arguments for registering a post type.
     * @param string $name Post type key.
     *
     * @return array
     */
    function bizvektor_hack_register_post_type_args( $args = array(), $name = '' ) {
    	$template = get_option( 'template' );
    
    	if ( 'info' === $name && 'biz-vektor' === $template ) {
    		$info_top_url      = esc_html( bizVektorOptions( 'infoTopUrl' ) );
    		$info_top_url      = wp_parse_url( $info_top_url );
    		$info_top_url_path = strtolower( $info_top_url['path'] );
    		$post_type_slug    = preg_replace( '/[^a-z0-9_\-\/]/', '', $info_top_url_path );
    		$post_type_slug    = trim( $post_type_slug, '/' );
    		$args['rewrite']   = array(
    			'slug'       => $post_type_slug,
    			'with_front' => false,
    		);
    	}
    
    	return $args;
    }
    
    add_filter( 'register_post_type_args', 'bizvektor_hack_register_post_type_args', 10, 2 );

    ブログと違い、ポスト名も%post_id%.html(ポストID[数字、シリアル値)にならないのも、
    なにかの設定エラーでしょうか? それとも、そもそも、お知らせは パーマリンク設定のカスタム構造 に準じないのでしょうか?

    これは、話題が変わってしまうので、別スレにした方がいいと思います(次回からで大丈夫です)。

    答えとしては、Custom Post Type Permalinksというプラグインをインストールすると、%post_id%.html にすることができます。Custom Post Type Permalinksをインストールすると、パーマリンク設定に新たに項目が追加されているはずなので、そこに %post_id%.html を入力して、[変更を保存]をクリックすればいいです。

    • この返信は2 年、 8 ヶ月前に  KUCKLU さんが編集しました。
    • この返信は2 年、 8 ヶ月前に  KUCKLU さんが編集しました。
    k. ken

    (@kenkurihara)

    @kuck1u さん

    なんどもすみません(でも、あと少しだと思います)。
    いただいたソースでBizVektor Hackを更新したら、
    以下のようになってしまいました(泣)

    ■お知らせ
    ◎トップURL設定: /ドメイン名/サブディレクトリ名/news/
    ◎結果: /ドメイン名/サブディレクトリ名/サブディレクトリ名/news/ポスト名[日本語]
    ———-
    ※/サブディレクトリ名/サブディレクトリ名/ とサブディレクトリが二つ続いてしまう。

    ポストIDの件は、別スレにしたいと思います。
    標準のパーマリンク設定が機能していないことになりますね。

    @kenkurihara さん。

    度々すみません。以下で大丈夫じゃないかと思います。たぶん。
    ※普段、WordPressをサブディレクトリにインストールしないので、その辺りを失念しておりました。

    <?php
    /**
     * Plugin Name: BizVektor Hack
     * Plugin URI: http://example.com/
     * Description: .
     * Version: 1.0.0
     * Author: Your name
     * Author URI: http://example.com/
     * License: GPLv2 or later
     * Text Domain: bizvektor-hack
     */
    
    /**
     * Change the post type args.
     *
     * @param array  $args Array of arguments for registering a post type.
     * @param string $name Post type key.
     *
     * @return array
     */
    function bizvektor_hack_register_post_type_args( $args = array(), $name = '' ) {
    	$template = get_option( 'template' );
            $home_url = wp_parse_url( home_url() );
    
    	if ( 'info' === $name && 'biz-vektor' === $template ) {
    		$info_top_url      = esc_html( bizVektorOptions( 'infoTopUrl' ) );
    		$info_top_url      = wp_parse_url( $info_top_url );
    		$info_top_url_path = strtolower( $info_top_url['path'] );
    		$post_type_slug    = preg_replace( '/[^a-z0-9_\-\/]/', '', $info_top_url_path );
    
                    if ( isset( $home_url['path'] ) ) {
                            $home_url_path  = ltrim( $home_url['path'], '/' );
                            $post_type_slug = str_replace( $home_url_path, '', $post_type_slug );
                    }
    
    		$args['rewrite']   = array(
    			'slug'       => trim( $post_type_slug, '/' ),
    			'with_front' => false,
    		);
    	}
    
    	return $args;
    }
    
    add_filter( 'register_post_type_args', 'bizvektor_hack_register_post_type_args', 10, 2 );
    k. ken

    (@kenkurihara)

    @kuck1u さん

    たびたびすみません。ありがとうございます。
    現状、以下のようになりました。
    おかげさまで、サブディレクトリ名のディレクトリが続くことは解消されました。

    ■お知らせ
    ◎トップURL設定: /ドメイン名/サブディレクトリ名/news/
    ◎結果: /ドメイン名/サブディレクトリ名/news/ポスト名[日本語]
    —————-

    いろいろ直してもらっていただいて恐縮なのですが、
    私の方でパーマリンク設定を以下のように変更しました。

    【変更前】
    ★設定 > パーマリンク設定
     カスタム構造: /%category%/%post_id%.html

    【変更後】
    ★設定 > パーマリンク設定
     カスタム構造: /%post_id%.html

    ———
    こうしないと、以下のようになります。

    ◎結果: /ドメイン名/サブディレクトリ名/news/ブログの任意のカテゴリ名(IDが最も若いカテゴリ)/ポスト名[日本語]

    なぜか、 [お知らせ]  ではなく、 [ブログ]のカテゴリが入ってしまいます。

    Custom Post Type Permalinks と パーマリンク設定を
    もういちど見直してみます。

    ——
    いろいろとお手数おかけしてすみません。
    ありがとうございます。

    @kenkurihara さん

    ◎結果: /ドメイン名/サブディレクトリ名/news/ブログの任意のカテゴリ名(IDが最も若いカテゴリ)/ポスト名[日本語]

    この部分は再現できないので何とも言えないのが、すくなくともBizVektor Hackが影響しているわけではなく、別の何かだと思います。例えば、他のプラグインやカスタマイズしたテーマなど。原因の特定方法として、以下になると思います。

    1. BizVektor Hack、Custom Post Type Permalinks、WP Multibyte Patch以外のプラグインを無効化する
    2. テーマをカスタマイズしていないノーマルなBizVektorにする

    1で現象が解消した場合は、どれかのプラグインが影響しているので、1つ1つ有効化していって、現象が発生するプラグインを特定。1で解消しない場合は、2を試す。

    • この返信は2 年、 8 ヶ月前に  KUCKLU さんが編集しました。
10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「【BizVektor】お知らせ のトップのURLを任意のものに変更したい」には新たに返信することはできません。